<?php
/**
 * 模型
 * 继承Model后，自动对应user表，自动对应表的字段
 * 参考：https://doc.thinkphp.cn/v8_0/orm.html
 */
namespace app\model;

use think\Model;
use think\model\concern\SoftDelete;

class User extends Model{
    /**
     * 软删除
     * 删除时间（默认）：delete_time
     */
    use SoftDelete;
    protected $deleteTime = 'delete_time';//未删除为null

    /**
     * 自动时间戳
     * 数据库字段默认为整形（int），但输出是会字段转换：YYYY-MM-DD HH:mm:ss
     * 方法1：$autoWriteTimestamp变量（独立-如下）
     * 方法2：修改配置（全局）
     */
    protected $autoWriteTimestamp = true;
    //修改默认字段
    // protected $createTime = 'create_at';//新增，默认：create_time
    // protected $updateTime = 'update_at';//修改，默认：update_time

    /**
     * 获取器
     * 作用：获取数据库的数据后，转换再输出
     * 格式：get字段名称Attr
     */
    public function getSexAttr($value){
        $sex = [
            0=>'未知',
            1=>'男',
            2=>'女',
        ];
        return $sex[$value];
    }

    /**
     * 获取器（不存在的字段）
     * 需要主动调用
     */
    public function getSexTextAttr($value,$data){
        $sex = [
            0=>'未知',
            1=>'男',
            2=>'女',
        ];
        return $sex[$data['sex']];
    }

    /**
     * 修改器
     * 作用：保存数据时，修改数据（与获取器相反）
     * 格式：set字段名称Attr
     */
    public function setPasswordAttr($value){
        return md5($value);//md5加密密码
    }

    /**
     * 多表关联
     */
    public function roles(){
        return $this->belongsToMany(Role::class,'user_role','user_id','role_id');
    }
}